import _vueToObject from "./toObject";
/**
 * 添加对象
 * @param { IndexedDBHelp } help 访问数据库的实例
 * @param { string } storeName 仓库名称（表名）
 * @param { Object } model 对象
 * @param { IDBTransaction } tranRequest 如果使用事务的话，需要传递开启事务时创建的连接对象
 * @returns 新对象的ID
 */

export default function addModel(help, storeName, model, tranRequest = null) {
  // 取对象的模型，便于保存
  const _model = _vueToObject(model);
  //   定义一个promise实例
  return new Promise((resolve, reject) => {
    // console.log(storeName, _model, tranRequest);
    const _add = (__tran) => {
      __tran.objectStore(storeName).add(_model).onsuccess = (event) => {
        resolve(event.target.result);
      };
    };
    if (tranRequest == null) {
      console.log("help=>", storeName);
      //   help.beginWrite(storeName).then((tran) => {
      help.beginWrite([storeName]).then((tran) => {
        console.log( tran, 26);
        // 自己开一个事务
        _add(tran);
      });
    } else {
      // 使用传递过来的事务
      _add(tranRequest);
    }
  });
}
